import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import cookie from 'js-cookie'

// 创建axios实例
const service = axios.create({
  baseURL: 'http://localhost',
  timeout: 15000 // 请求超时时间
})
// http request 拦截器
service.interceptors.request.use(
  config => {
    // token：请求服务器端接口时我们默认带上token，需要登录的接口如果token没有或者token过期，服务器端会返回208状态，然后发送登录事件打开登录弹出层登录
    // 判断cookie是否有token值？----myheader.vue中先设置，此时发送请求判断处理
    if (cookie.get('token')) {
      // 将token放入header中去----供后端网关，取出值，进行判断使用
      config.headers['token'] = cookie.get('token');
    }
    return config
  },
  err => {
    return Promise.reject(err)
  })
// http response 拦截器
service.interceptors.response.use(
  response => {
    // 预处理：整合网关，登录验证
    if (response.data.code === 208) {    // 208---是网关出filter验证，返回的状态码
      // 弹出：登录验证框。进行登录
      loginEvent.$emit('loginDialogEvent');
      return;
    } else {
      if (response.data.code !== 200) {
        Message({
          message: response.data.message,
          type: 'error',
          duration: 5 * 1000
        })
        return Promise.reject(response.data)
      } else {
        return response.data
      }
    }
  },
  error => {
    return Promise.reject(error.response)
  })
export default service